package com.dong.zhaofengcontact2018;

import android.content.Intent;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.dong.zhaofengcontact2018.activity.ShowContactPhoneActivity;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class MainActivity extends AppCompatActivity {





    class MyAsyncTask extends AsyncTask<File, Integer, Void> {
        public MyAsyncTask() {
            super();
        }

        @Override
        protected Void doInBackground(File... files) {
            //数据库目录 如果不存在，创建
            if (!files[0].getParentFile().exists()) {//不存在目录
                files[0].getParentFile().mkdirs();
            }
            //存在数据库目录，判断存在数据库文件liang.db是否存在
            if (files[0].exists()) {//存在数据库文件liang.db，则不复制，直接退出后台，进入通讯录主界面
                return null;
            }
            //从 assets 复制
            copyDatabaseFromAssert(files[0]);
            return null;
        }

        private void copyDatabaseFromAssert(File file) {
            // 从assets中复制到数据库目录
            try {
                // 创建数据库文件
                file.createNewFile();
                // 获取数据库文件liang.db
                Resources resources = MainActivity.this.getResources();
                InputStream inputStream = resources.openRawResource(R.raw.liang);
                copyFile(inputStream, file);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        // 复制单个文件（输入流，文件名实例）
        void copyFile(InputStream in, File to) {
            FileOutputStream fs = null;
            try {
                int byteread = 0;
                if (in.available() > 0) { // 流存在时
                    fs = new FileOutputStream(to);
                    byte[] buffer = new byte[1024];
                    while ((byteread = in.read(buffer)) != -1) {
                        fs.write(buffer, 0, byteread);
                    }
                    in.close();
                    fs.flush();
                    fs.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (in != null || fs != null) {
                    try {
                        in.close();
                        fs.flush();
                        fs.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            // TODO: 2018/8/7 后台复制完成，关闭欢迎动画，进入显示通讯录主界面
            Intent intent = new Intent(MainActivity.this, ShowContactPhoneActivity.class);
            startActivity(intent);
            MainActivity.this.finish();
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onCancelled(Void aVoid) {
            super.onCancelled(aVoid);
        }

        @Override
        protected void onCancelled() {
            super.onCancelled();
        }
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // TODO: 2018/8/7 欢迎界面动画
        // TODO: 2018/8/7 启动线程，复制数据库
        File  dbFile = getDatabasePath("liang.db");
        MyAsyncTask myAsyncTask = new MyAsyncTask();
        // TODO: 2018/8/28 启动异步线程
        myAsyncTask.execute(dbFile);

    }
}
